package com.tgy.optional;

import com.tgy.entity.Blog;
import com.tgy.mapper.BlogMapper;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.List;
import java.util.Optional;

/***
 * @ClassName: Test
 * @Description: 测试 Optional
 * @Auther: 送你一块二向箔
 * @Date: 18:57 2022/4/23
 * @version : V1.0
 */
@Component
public class TestOp {
    public static void main(String[] args) {
    }
    @Resource
    BlogMapper blogMapper;
    public  void noOptional(){ ;
        List<Blog> all = blogMapper.findAll();
        all.forEach(System.out::println);
        // 不使用 Optional
        Blog blog = new Blog();
        blog.setId("asfdasfd");
        System.out.println(blog.getTitle().toUpperCase());
    }

    //使用 Optional
    public  void useOptional(){
        List<Blog> all = blogMapper.findAll();
        all.forEach(System.out::println);
        // 使用 Optional
        Blog blog = new Blog();
        Optional.of(blog).map(Blog::getTitle).map(String::toUpperCase).ifPresent(System.out::println);
        Optional<String> s = Optional.of(blog).map(Blog::getTitle).map(String::toUpperCase);//.ifPresent(System.out::println);
        System.out.println(s.orElse("==========="));
        System.out.println("-----------------");
//        blog.setId("asfdasfd");
//        System.out.println(blog.getTitle().toUpperCase());
    }

    //使用 Optional
    public  void useOptional1(){
        System.out.println("使用开始");
        // 使用 Optional
        Blog blog2 = new Blog();
        //故意导致空指针
        blog2.setId(null);
        Optional<Blog> blog1 = Optional.of(blog2);
        if (blog1.map(Blog::getId).filter(s -> s.equals("2")).isPresent()){
            blog2.setTitle("大家好");
        }
        String s = blog1.map(blog -> blog.getTitle())
                .map(String::toUpperCase)
                .orElse("这是默认");
        System.out.println(blog2.getTitle());

    }

    //不使用 Optional
    public  void noOptional1(){
        System.out.println("不是使用开始");
        // 使用 Optional
        Blog blog2 = new Blog();
        blog2.setId(null);
        //只用调用null的方法时候才会报错
        if (blog2.getId() != null && blog2.getId().equals("2")) {
            blog2.setTitle("大家好");
        }
        System.out.println(blog2.getTitle());

    }

}
